package com.juzipi.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.juzipi.common.model.PageBody;
import com.juzipi.common.tools.PageResult;
import com.juzipi.inter.bo.UserBo;
import com.juzipi.inter.pojo.User;

import java.util.List;

/**
 * @Author juzipi
 * @Date 2021/4/26 14:38
 * @Info service 接口层
 */
public interface UserService extends IService<User> {


    /**
     * 查询所有用户和它们的角色
     * @param pageBody
     * @return 分页结果集
     */
    PageResult queryAllUserAndRole(PageBody pageBody);

    /**
     * 修改用户信息
     * @param user
     * @return 校验后返回的状态
     */
    Object modifyUser(User user);

    /**
     * 模糊查询所有用户和它们对应的角色
     * @param pageBody 封装的分页参数
     * @return 分页结果集
     */
    PageResult queryAllUserAndRoleLike(PageBody pageBody);

    /**
     * 分类查询所有用户
     * @param pageBody 封装的分页参数
     * @return 分页结果集
     */
    PageResult queryUserBySort(PageBody pageBody);

    /**
     * 根据id集合批量删除用户
     * @param userIds id集合
     * @return 数据库受影响的行数
     */
    Integer removeUserByIds(List<Long> userIds);

    /**
     * 根据id查询单个用户的信息
     * @param userId id
     * @return 用户信息
     */
    UserBo queryUserById(Long userId);

    /**
     * 校验用户名是否已存在
     * @param username 用户名
     * @return 布尔值
     */
    Boolean checkUsernameIsExist(String username);

    /**
     * 校验邮箱是否唯一
     * @param email 邮箱
     * @return 布尔值
     */
    Boolean checkEmailUnique(String email);


    /**
     * 校验电话号码是否唯一
     * @param phoneNumber 电话号码
     * @return 布尔值
     */
    Boolean checkPhoneNumberUnique(String phoneNumber);


    //-----------------------------------------------------------



}
